package eight;

import static util.Print.print;

/**
 * Created by ab on 2016/11/3.
 */
//Characteristic 特征
class Characteristic {
    private String s;

    Characteristic(String s) {
        this.s = s;
        print("Creating Characteristic " + s);
    }

    protected void dispose() {
        print("Disposing Characteristic " + s);
    }
}

class Description{
    private String s;

    Description(String s){
        this.s=s;
        print("Creating Description "+s);
    }

    protected void dispose(){
        print("Disposing Description "+s);
    }
}

//LivingCreature 生物
class LivingCreature{
    private Characteristic p=new Characteristic("is alive");
    private Description t=new Description("Basic Living Creature");
    LivingCreature(){
        print("LivingCreature");
    }
    protected void dispose(){
        print("LivingCreature dispose");
        t.dispose();
        p.dispose();
    }
}


class Animal extends LivingCreature{
    private Characteristic p=new Characteristic("has heart");
    private Description t=new Description("Animal not Vegetable");
    Animal(){
        print("Animal()");
    }
    protected void dispose(){
        print("Animal() dispose");
        t.dispose();
        p.dispose();
        super.dispose();
    }
}

//Amphibian 两栖动物
class Amphibian extends Animal{
    private Characteristic p =new Characteristic("can live in water");
    private Description t=new Description("Both water and land");
    Amphibian(){
        print("Amphibian");
    }
    protected void dispose(){
        print("Amphibian dispose");
        t.dispose();
        p.dispose();
        super.dispose();
    }
}

//Frog 青蛙 Toad 蛤蟆 Croaks呱呱叫
class Frog extends Amphibian{
    private Characteristic p=new Characteristic("Croaks");
    private Description t= new Description("Eats Bugs");
    public Frog(){print("Frog()");}
    protected void dispose(){
        print("Frog dispose");
        t.dispose();
        p.dispose();
        super.dispose();
    }
}



public class lesson5 {
    public static void main(String[] args){
        Frog frog=new Frog();
        print("Bye");
        frog.dispose();
    }
}
